Software development teams are generally responsible for creating software in support of a new product or program. For example, a corporation might offer a new device for sale to the public. The corporation might also offer technical support of the device in the form of technical documents from a website, customer representatives providing phone support, software or firmware updates, and the like. Each of these aspects may require software created by a software development team to implement them.
Alternatively, a company, such as an insurance provider, may offer a program that provides a discount on insurance premiums to qualified customers. The insurance provider may alert customers to the existence of the program, verify the qualifications of customers, and periodically monitor customer feedback or telematics data to verify that the qualifications are maintained. These activities may also require software to be created by a software development team implement them.
Software development teams may typically encounter several problems when working on a software creation project. First, there is often a lack of computer software tools that allow a software architect or designer to create and document the architecture of the software which will provide product or program support. Second, as a result of the first problem, there is an inability of one development team to share the software architecture with another team that may have similar software requirements. These and other problems may lead to extended development times, inefficient usage of resources, and other drawbacks.